Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSX and as operator #3564

Merged
merged 29 commits into from
Jun 29, 2015
Merged

JSX and as operator #3564

merged 29 commits into from
Jun 29, 2015

Conversation

RyanCavanaugh
Copy link
Member

This implements JSX parsing, typechecking, JSX emit, and React emit as specified in #3203, as well as the as operator suggested in #296.

Each commit between 556cb70 and a5c44a3 contains a disjoint set of files for easier browsing. Commits after the Baseline-accept commit will be touching arbitrary files.

@mhegazy mhegazy mentioned this pull request Jun 19, 2015
@@ -159,6 +164,14 @@ namespace ts {
}
};

let JsxNames = {
JSX: 'JSX',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double quotes on these.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✔️

@basarat
Copy link
Contributor

basarat commented Jun 30, 2015

@ctolkien just pushed atom-typescript version v4.8.0 that uses this so you guys can do development with it, I have a sample view as well : https://github.com/TypeStrong/atom-typescript/blob/master/lib/main/atom/views/rView.tsx . Also there is https://github.com/basarat/ntypescript/ for the command line tooling

@RyanCavanaugh love at first sight 🌹

@nosami
Copy link
Member

nosami commented Jun 30, 2015

@basarat nice :)

@tejacques
Copy link

This is great! Really excited to be able to use JSX in TypeScript.

Not sure where best to voice this, so I'll mention it here -- is it a concern that the semantics of as are different in TypeScript compared to C#?

The Facebook devs working on Flow chose to deal with casts by reusing the colon notation, e.g.:

var foo: bar = {}: bar

The type annotations used between Flow and TypeScript are very similar otherwise, I'd love to see the similarities grow where possible to potentially improve the odds of ECMAScript standardization as well as tool interoperability.

@RyanCavanaugh
Copy link
Member Author

TypeScript already has many keywords/oprators that are the same as in other languages; adding one more isn't particularly interesting IMHO. Because none of our type-related syntax has runtime semantics, it shouldn't be too confusing that as doesn't either. It's similar problem as how <number>x doesn't perform the same coercion as (int)x in C.

The flow-style assertion was discussed briefly at #3203 (comment). I'd also try to chime in at issue #296 for further discussion if you're interested.

@Lenne231
Copy link

Lenne231 commented Jul 3, 2015

Is it possible to emit react elements as defined in https://facebook.github.io/react/blog/2014/10/14/introducing-react-elements.html under "Third-party Languages" instead of React.createElement(...)so that we don't need to import React?

@RyanCavanaugh
Copy link
Member Author

You can use --jsx preserve to emit JSX and then use the JSX transformer of your choice.

We'll be looking at what kind of JSX emit people find the most useful to see if it's worth the cost to add them to TypeScript directly.

@Lenne231
Copy link

Lenne231 commented Jul 4, 2015

Ok. There should be at least a compiler error if TypeScript emits React.createElement(...) but React is not in scope.

@dead-claudia
Copy link

Yeah...such a pragma is nice. Other places where JSX is used outside of React:

@vilicvane
Copy link
Contributor

Does this mean Facebook is joining the TypeScript ecosystem along with Google?

@RyanCavanaugh
Copy link
Member Author

Other places where JSX is used outside of React:

Thanks for the list! Keep it coming -- it's good for us to understand what other JSX transforms we might need to support.

Does this mean Facebook is joining the TypeScript ecosystem along with Google?

No 😞

@mikemorton
Copy link

Pretty cool that the atom editor is already integrated with this. Does anyone have any advice for getting visual studio to use the 1.6 compiler?

@mhegazy
Copy link
Contributor

mhegazy commented Jul 14, 2015

you can enable DevMode and get VS to work on the latest drops from master.

@mikemorton
Copy link

Thanks @mhegazy - I tried that but I'm finding visual studio is still not doing syntax highlighting on my tsx files and is complaining when I refer to them from .ts files. Would you expect DevMode to resolve that issue?

@danquirk
Copy link
Member

@mikemorton unfortunately not. DevMode updates the TypeScript portion of the language service but things like how we understand/interpret file type associations live in the part of Visual Studio code that needs to be installed via a published update.

You could also try Atom's TypeScript plugin today.

@FremyCompany
Copy link

Does anyone working on this have any idea on how I could get this to work with Mithril?
PS: I had a look at mithril.d.ts but it doesn't include JSX definitions, and I'm not sure I understand how I can make one that would work with Mithril conventions.

@danquirk
Copy link
Member

@FremyCompany I would try StackOverflow, comments on PRs should really be specifically about the change and any implementation issues

@FremyCompany
Copy link

@danquirk Thanks I'll wait for 1.6 to be more broadly supported and head towards StackOverflow at that time. I delete my comment feel free to do the same.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.